package Services;

import java.util.ArrayList;
import java.util.HashMap;

import Passager.Profil;

/**
 * Calsse contenant les services choisis par un passager
 * Il s'agit de la base de donnée des services
 * Tous les elements sont calculés selon un coeficient
 * @author belli
 *
 */
public class Services {
	
	//Definir les types de transports
	private HashMap<TypeClasseTransport, Double> ListeClasseTransport;
	
	//Definir les types de passagers
	private HashMap<Profil, Double> ListePassagers;
	
	//Definir les repas
	private HashMap<Repas, Double> ListeRepas;
	
	//Definir les types de billets
	private HashMap<typeBillet, Double> ListeBillets;
	
	//Definir les dodo
	private double dodo;
	
	public Services(){
		//Definir les types de transports
		ListeClasseTransport = new HashMap<TypeClasseTransport, Double>();
		ListeClasseTransport.put(TypeClasseTransport.AFFAIRE, 2.0);
		ListeClasseTransport.put(TypeClasseTransport.PREMIERECLASSE, 1.5);
		ListeClasseTransport.put(TypeClasseTransport.SECONDECLASSE, 0.75);
		ListeClasseTransport.put(TypeClasseTransport.DEFAUT, 0.5);
		
		//Definir les types de passagers
		ListePassagers  = new HashMap<Profil, Double>();
		ListePassagers.put(Profil.ADULTE, 2.0);
		ListePassagers.put(Profil.CARTEDEFIDELITE, 1.75);
		ListePassagers.put(Profil.COUPLE, 1.5);
		ListePassagers.put(Profil.ENFANT, 1.0);
		ListePassagers.put(Profil.ENFANTNONACCOMPAGNE, 1.0);
		ListePassagers.put(Profil.ETUDIANT, 1.0);
		ListePassagers.put(Profil.FAMILLE, 1.0);
		ListePassagers.put(Profil.JEUNE, 1.0);
		ListePassagers.put(Profil.SENIOR, 1.2);
		ListePassagers.put(Profil.DEFAUT, 1.0);
		
		//Definir les repas
		ListeRepas = new HashMap<Repas, Double>();
		ListeRepas.put(Repas.DEJEUNER, 1.5);
		ListeRepas.put(Repas.DINER, 2.0);
		ListeRepas.put(Repas.PETITDEJEUNER, 1.0);
		ListeRepas.put(Repas.POISSON, 2.5);
		ListeRepas.put(Repas.VEGETARIEN, 1.5);
		ListeRepas.put(Repas.VIANDE, 2.5);
		ListeRepas.put(Repas.DEFAUT, 1.0);
		
		//Definir les prix des billets
		ListeBillets = new HashMap<typeBillet, Double>();
		ListeBillets.put(typeBillet.MODIFIABLE, 2.3);
		ListeBillets.put(typeBillet.MODIFIABLESOUSCONDITION, 2.0);
		ListeBillets.put(typeBillet.DEFAUT, 1.0);
		
		//Definir les dodo
		dodo = 2.0;
	}
	
	/**
	 * Obtenir le prix en fonction des options
	 * @param prixdep
	 * @param trans
	 * @param prof
	 * @param rep
	 * @param nbRepas
	 * @param ledodo
	 * @return
	 */
	public double getPrix(double prixdep, TypeClasseTransport trans, Profil prof, ArrayList<Repas> repas,typeBillet billet, int nbNuit){
		double prix = 0;
		prix = prix + prixdep;
		
		prix = prix*ListeClasseTransport.get(trans);
		prix = prix*ListePassagers.get(prof);
		
		//Calculer le prix des repas
		for (Repas repas2 : repas) {
			prix += ListeRepas.get(repas2);
		}
		
		prix = prix*ListeBillets.get(billet);
		prix = prix*dodo*nbNuit;
		
		return prix;
	}
}
